var store_combo;
var store_editor;

Ext.onReady(function()
{
    store_padres = new X.store.Json({ 
        fields : [
            'codigoRubro',
            'codigo',
            'nombreRubro',
            'codigoNombre', //agregado para concatenar codigo + nombrerubro
            'egreso',
            'pname'         //agregado para probar hijo no padre
        ]
    });

    store_padres.addListener('load', function(store, records, options){ 
        for(var i=0; i<store.getCount(); i++){
               var record = store.getAt(i);
               record.set('codigoNombre', record.get('codigo') + ' ' + record.get('nombreRubro'));
        } 
        filtro_padres(true);
    });

     
    var form = new X.form.FormPanel({
        title            : 'Crear Rubro',
        submitButtonText : 'Crear',
        returnButtonText : 'Cancelar',
        submitUrl        : '/rubro/ajax-crear',
        returnUrl        : '/rubro/listar',
        width            : 650,
        labelWidth       : 70,

        items:[
            new Ext.form.FieldSet({title:'Rubro',items:
            [
                //padre
                new X.field.Combo({
                        hiddenName   : 'codigoPadre',
                        fieldLabel   : 'Rubro Padre',
                        valueField   : 'codigoRubro',
                        displayField : 'codigoNombre',
                        id           : 'rubroPadre',
                        allowBlank   : true,
                        width        : 485,
                        store        : store_padres,
                        triggerAction: 'all',
                        lastQuery    : '',
			   editable     : true
                }),

                //checkbox es terminal o no
                new X.field.Checkbox ({fieldLabel: 'Rubro Terminal', id: 'checkTerminal', checked:false,
                                        inputValue:'T',
                                        listeners: {
                                               check: function () {
                                                   rPadre=Ext.getCmp('rubroPadre');
                                                   if(checkTerminal.checked){
                                                       if(rPadre.getValue()==0){
                                                           X.msg.Failure('Un rubro sin padre no puede ser terminal');
                                                           checkTerminal.checked=false;
                                                       }
                                                   }
                                                }
                                            }
                                       }),

               new X.field.Text  ({fieldLabel:'Codigo',      id:'codigoRubro', width:485, maskRe: /[0-9.]/}),
               

               new X.field.RadioGroup({fieldLabel:'Tipo', id:'tipoRubro', boxMaxWidth: 260,
                                items: [
                                    {boxLabel: 'Egreso',  name: 'rb-auto', id: 'radioE', checked: true
                                        ,listeners:{
                                            check: function() {
                                                if(radioE.checked){
                                                    Ext.getCmp('tipo').setValue('E');
                                                    filtro_padres(true);
                                                 } 
                                            }
                                        }
                                    },
                                    {boxLabel: 'Ingreso', name: 'rb-auto', id: 'radioI'
                                        ,listeners:{
                                            check: function() {
                                                if(radioI.checked){ 
                                                    Ext.getCmp('tipo').setValue('I');
                                                    filtro_padres(false); 
                                                }
                                            }
                                        }
                                    }
                                 ] 
                                }),
               new X.field.Hidden({id:'tipo', value:'E'}),

               new X.field.Text    ({fieldLabel:'Descripcion',   id:'nombreRubro', width:485}),

               new X.field.RadioGroup({fieldLabel:'Proposito', id:'propositoRubro', boxMaxWidth: 260,
                                items: [
                                    {boxLabel: 'Especifico', name: 'rb', id: 'radioEspe',checked: true},
                                    {boxLabel: 'General',    name: 'rb', id: 'radioGral',
                                            listeners: {
                                                check: function () {
                                                      if(radioGral.checked)
                                                          Ext.getCmp('proposito').setValue('G');
                                                      if(radioEspe.checked)
                                                          Ext.getCmp('proposito').setValue('E');
                                                }
                                            }
                                    }
                                 ]}),
                new X.field.Hidden({id:'proposito', value:'E'})               
                
            ]})
        ]


    });

    //funcion para filtrar las opciones de rubros padres, de acuerdo si se elige
    //sea un rubro de ingreso o de egreso
    function filtro_padres(sel){
        try{            
            store_padres.getAt(0).set('egreso', sel);
            store_padres.filter('egreso', sel, false, false); 
            Ext.getCmp('rubroPadre').setValue(0); 
        }
        catch(e){
            alert(e.message);
        }
    }
    
    //verificacion de campos antes del submit
    form.getForm().addListener('beforeaction', function(form, action){
        if (Ext.isEmpty(Ext.getCmp('nombreRubro').getValue())){
            X.msg.Failure('Complete el campo "Descripcion"');return false;
        }
        if (Ext.isEmpty(Ext.getCmp('codigoRubro').getValue())){
            X.msg.Failure('Complete el campo "Codigo"');return false;
        }else{
            if(/^(\.).*/.test(Ext.getCmp('codigoRubro').getValue())){
                alert('El código no puede iniciar con un punto'); 
                return false;
            }
            if(/.*(\.)$/.test(Ext.getCmp('codigoRubro').getValue())) {
                alert('El código no puede finalizar con un punto'); 
                return false;
            }
            if(/.*\.\..*/.test(Ext.getCmp('codigoRubro').getValue())) {
                alert('El código no puede contener dos puntos seguidos');
                return false;
            }
        }
        return true;
    });
   
});